草庐IT

Android Explicit Intent 抛出 NoClassDefFounderror

全部标签

c++ - 作为 const 抛出异常

取如下代码;voidDoThrow(conststd::exception&e){throwe;}intmain(intnArgs,char*args[]){std::exceptione;try{DoThrow(e);}catch(std::exception&e){//constexceptionrefiscaught}return0;}我试图在我的项目中改进const的正确性,无意中造成了上述情况。就目前而言,在DevStudio中,catchblock确实捕获了异常,尽管它作为const&抛出但作为非const&捕获。问题-应该吗?:-) 最佳答案

NoClassDefFoundError 原因分析

NoClassDefFoundError原因分析NoClassDefFoundError是一个在Java应用程序运行期间可能遇到的错误。这个错误表明Java虚拟机(JVM)已经试图加载一个类,但找不到该类的定义。让我们一步步分析可能导致NoClassDefFoundError的原因。缺失的类文件:在编译和运行Java程序时,JVM试图从classpath中加载类文件。如果类文件缺失,JVM将无法加载该类,从而导致NoClassDefFoundError。确保类文件存在于正确的位置,并且已添加到classpath。类路径问题:类路径是JVM用于查找类文件的环境变量。如果类路径设置不正确,JVM将

c++ - 我如何找出 std::map 方法可以抛出哪些异常?

我想在使用std::map(C++)方法以及使用boost::unordered_map方法时处理异常情况。但是,查看方法文档(例如:insert)并没有提供我可以捕获的异常列表。 最佳答案 查看好的文档:如果您不确定那么-最终-标准,但是例如http://en.cppreference.com/w/cpp/container/map/insert可能更方便,并且有一个异常(exception)标题涵盖大多数变体(希望有一天会完成)。您不可能找到比boost站点在线文档更好的boost文档。如果好的引用资料没有记录异常,通常是因为该

c++ - 为什么在抛出意外异常时此程序没有中止?

我正在阅读C++常见问题解答第2版,常见问题解答9.04-什么是异常规范?。那里提到,如果我们从一个签名指定一组预定义异常类型的函数中抛出意外异常,它应该调用unexpected()->terminate()->abort()。但是我的程序捕获了意外异常并且没有abort()ing它,为什么?#includeusingnamespacestd;classType1{};classType2{};classType3{};voidfunc()throw(Type1,Type2){throwType3();}intmain(){try{func();}catch(Type1&obj1){c

c++ - std::vector 默认构造函数可以抛出异常吗

如果我使用默认构造函数(和默认分配器)构造一个空的std::vector,它会抛出异常吗?一般来说,为容器的元素分配空间会抛出异常(即std::bad_alloc)。但是std::vector的默认构造函数并不需要分配任何这样的空间;它可以在第一次插入或赋值时懒惰地分配一些空间。但是C++标准是否要求它不抛出异常(暗示惰性分配,或者捕获std::bad_alloc然后回退到惰性分配)? 最佳答案 这取决于Allocator的默认构造函数。std::vector的默认构造函数声明为vector()noexcept(noexcept(A

C++构造函数初始化列表抛出异常

我对以下代码有疑问。可见我已经在C的构造函数中处理了A的构造函数抛出的异常,何必再在main函数中捕获并处理异常呢?#includeclassWException:publicstd::exception{public:WException(constchar*info):std::exception(info){}};classA{public:A(inta):a(a){std::cout 最佳答案 您实际上无法捕获构造函数中的异常。你可以处理它,但你必须重新抛出它或另一个异常。原因是关于对象完整性和对象生命周期:如果a的构造抛出

c++ - 抛出非异常对象

C++允许throw任何类型的对象。从exception到string甚至int。但是除了exception之外,我从未见过任何throwing的真实世界应用。我的问题是,throw非exception对象的应用是什么? 最佳答案 从实用性的角度来看,几乎1没有用于抛出string、int或其他任何东西的应用程序t派生自std::exception。这并不是因为没有迹象表明这样做,而是因为有一些禁忌症表明您不应该这样做。您不想抛出任何不是从std::exception派生的东西的主要原因有两个:异常安全。例如,如果您抛出一个std:

c++ - 当我抛出异常时内存是否被释放?

我曾与一些同事讨论当您在动态分配的类中抛出异常时会发生什么。我知道malloc被调用,然后是类的构造函数。构造函数永远不会返回,那么malloc会发生什么?考虑以下示例:classB{public:B(){cout分配的内存o发生了什么,它泄漏了吗?CRT是否捕获构造函数的异常并释放内存?干杯!丰富 最佳答案 调用newB();解决两件事:使用运算符new()进行分配(全局运算符或类特定运算符,可能是语法为new(xxx)B()的放置运算符)调用构造函数。如果构造函数抛出异常,则调用相应的运算符delete。对应的删除是放置删除的情

c++ - C++ 中的抛出和三元运算符

以下代码可以使用G++4.6.1编译,但不能使用VisualStudio2008return(m_something==0)?throwstd::logic_error("Somethingwronghappened"):m_something;事实是VisualStudio编译器执行内部崩溃。我想知道这是否是标准的C++,以及为什么它不能用VisualStudio编译,但可以用G++编译? 最佳答案 它是标准的C++。条件表达式中的then/else表达式中的任一个(或两者)都允许是抛出表达式(C++985.16/2)。如果Vis

c++ - 如何在抛出异常时阻止构造函数创建对象

当构造函数抛出异常时,如何阻止创建对象?在下面的示例中,我创建了一个Month()类,intmonth_属性的合法值在1到12的范围内。我实例化了December,或者dec,整数值为13。应该抛出异常,但对象仍被创建。然后调用析构函数。如何在抛出异常时中止类实例的创建?输出--Month()constructorcalledforvalue:2--Month()constructorcalledforvalue:6--Month()constructorcalledforvalue:13EXCEPTION:Monthoutofrange2613--~Month()destructor